const express=require('express');
const mysql=require('mysql')
const bodyParser=require('body-parser')
const app=express();

app.listen(3000,()=>{
    console.log('服务器创建成功');
});
app.use(express.static('./public'));
app.use(bodyParser.urlencoded({
    extended:false
}));
// // 加载CORS模块
// const cors = require('cors');

// // 使用CORS中间件
// app.use(cors({
//   origin: ['http://localhost:8080', 'http://127.0.0.1:8080']
// }));


app.all("*",function (req,res,next) { 
  // Access-Control-Allow-Origin
  // 接收 - 控制 - 允许 - 来源
  // 代表：服务器允许来自 参数2 来源的访问
  // * ：通配符，代表所有
  res.header("Access-Control-Allow-Origin","*");
    // next(); //next() 代表可以继续执行代码

  // 特殊指定：只允许来自localhost:5501 的访问
  // res.header("Access-Control-Allow-Origin","http://127.0.0.1:5501");

// 防止中文乱码，通常添加:
 res.header("content-type","javascript/json;charset=utf-8");
  next();

 });


const pool = mysql.createPool({
    host: '127.0.0.1',   //MySQL服务器地址
    port: 3306,          //MySQL服务器端口号
    user: 'root',        //数据库用户的用户名
    password: '',        //数据库用户密码
    database: 'youke',    //数据库名称
    connectionLimit: 20, //最大连接数
    charset: 'utf8'      //数据库服务器的编码方式
  });
  // 加载页面时，显示所有的房子信息
app.get('/room',(req,res)=>{
  let sql='SELECT *FROM ROOM'
  pool.query(sql,(error,result)=>{
    if(error) throw error;
    console.log(result);
    
    res.send({message:'ok',code:200,result:JSON.stringify(result) });
    console.log(result);
    
  })
})  
// 加载页面时，显示所有区位
app.get('/position',(req,res)=>{
  let sql='select *from positions'
  pool.query(sql,(error,results)=>{
    if(error) throw error;
    let resultArray=JSON.stringify(results)
    res.send({message:'OK',code:201,results:resultArray});
  })
})
// 显示详细区位
app.get('/position/:pon',(req,res)=>{
  console.log(req.params.pon);
  let key=req.params.pon;
  let sql=`select *from ${key}`
  pool.query(sql,(error,results)=>{
    if(error) throw error;
    console.log(JSON.stringify(results));
    res.send({message:'ok',code:'202',results:JSON.stringify(results)})
  })
})
// 搜索
app.get('/room/pg_1/:kw',(req,res)=>{
  console.log(req.params.kw);
  let search=JSON.parse(req.params.kw);
  console.log(search);
  // console.log('传递过来的筛选条件'+search);

  
  // console.log(search);
  // console.log(`'%${req.params.kw}%'`);

  // ================筛选条件========================
  let sqlWhere='';//保存所有的搜索条件sql语句
  let sql_length=0;//用于判断是否为第一个条件
  // 搜索框输入条件kw
  if(search.kw!=null&&search.kw!=undefined&&search.kw!=''){
    if(sql_length!=0){
      sqlWhere+=' and '
    }
    sqlWhere+=`detailed LIKE '%${search.kw}%'`
    sql_length=1;
  }
  //区位position
  if(search.position!=null&&search.position!=undefined&&search.position!=''){
    if(sql_length!=0){
      sqlWhere+=' and '
    }
    sqlWhere+=`positionBig='${search.position}'`
    sql_length=1;
  }
  //详细位置：positionL
  if(search.positionL!=null&&search.positionL!=undefined&&search.positionL!=''){
    if(sql_length!=0){
      sqlWhere+=' and '
    }
    sqlWhere+=`position='${search.positionL}'`
    sql_length=1;
  }
  //租金区间：price
  if(search.price!=null&&search.price!=undefined&&search.price!=''){
    if(sql_length!=0){
      sqlWhere+=' and '
    }
    sqlWhere+=`rent='${search.price}'`
    sql_length=1;
  }
  // 房子类型：type
  if(search.type!=null&&search.type!=undefined&&search.type!=''){
    if(sql_length!=0){
      sqlWhere+=' and '
    }
    sqlWhere+=`houseType='${search.type}'`
    sql_length=1;
  }
  // 入住时间：times
  if(search.times!=null&&search.times!=undefined&&search.times!=''){
    if(sql_length!=0){
      sqlWhere+=' and '
    }
    sqlWhere+=`joinTime='${search.times}'`
    sql_length=1;
  }
  // 室友
  if(search.friend!=null&&search.friend!=undefined&&search.friend!=''){
    if(sql_length!=0){
      sqlWhere+=' and '
    }
    sqlWhere+=`joinTime='${search.friend}'`
    sql_length=1;
  }
  // 是否有独卫：toilet
  if(search.toilet!=null&&search.toilet!=undefined&&search.toilet!=''){
    if(sql_length!=0){
      sqlWhere+=' and '
    }
    sqlWhere+=`toilet=${search.toilet}`
    sql_length=1;
  }
  // 是否有阳台：balcony
  if(search.balcony!=null&&search.balcony!=undefined&&search.balcony!=''){
    if(sql_length!=0){
      sqlWhere+=' and '
    }
    sqlWhere+=`balcony=${search.balcony}`
    sql_length=1;
  }
  // 是否有窗户：window
  if(search.window!=null&&search.window!=undefined&&search.window!=''){
    if(sql_length!=0){
      sqlWhere+=' and '
    }
    sqlWhere+=`bayWindow=${search.window}`
    sql_length=1;
  }
  // 是否可住两人：two
  if(search.two!=null&&search.two!=undefined&&search.two!=''){
    if(sql_length!=0){
      sqlWhere+=' and '
    }
    sqlWhere+=`joinTwo=${search.two}`
    sql_length=1;
  }
  // 是否检验：check
  if(search.check!=null&&search.check!=undefined&&search.check!=''){
    if(sql_length!=0){
      sqlWhere+=' and '
    }
    sqlWhere+=`ownership1=${search.check}`
    sql_length=1;
  }

  let sql='';  
  if(sqlWhere==''){
    sql="select *from room"
  }else{
    sql=`SELECT * FROM ROOM WHERE ${sqlWhere}`
  }
  console.log( '查询条件'+sqlWhere);
  let key=[];
  //查询符合条件的房子  
  pool.query(sql,(error,results)=>{
    if(error) throw error;

    results.forEach(element => {
      key.push(element.eid)
    });
    if(key.length==0){
      res.send({message:'not found',code:201,result:results});
    }else{
      let key2=key .join("' or eid='");
      //查询符合条件的房子的信息 并发送信息
      pool.query(`select *from information where eid='${key2}'`,(error,results)=>{
        console.log(key2);
        console.log(results);
        res.send({message:'ok',code:200,result:results})
      })
    }
    
  })
  
 
})
